
        <html>
			<head>
			     <title>Free Star木马分析与追溯 - 360安全卫士</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/papers/14412">http://drops.wooyun.org/papers/14412</a></h1>
				
      <p>
        <p><strong>Author:360天眼实验室</strong></p>

<h1>0x00 引子</h1>

<hr />

<p>人在做，天在看。</p>

<p>360天眼实验室一直与各种木马远程做斗争，对手总是试图找到办法使自己处于安全监视者的雷达之外。近期我们看到了一些较新版本的大灰狼木马采用了一种新的上线方式，与利用QQ空间、微博、博客或者网盘等方式上线相似，其通过调用QQ一个获取用户昵称的接口来获取上线地址，又一种通过正常通信渠道进行非正常通信的企图。</p>

<!--more-->

<p><img src="http://static.wooyun.org//drops/20160405/201604050511036526919.png" alt="p1" /></p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511054800422.png" alt="p2" /></p>

<p>当一个方法被证明有效，很容易就会被其他造马者“借鉴”。通过基于360威胁情报中心数据的关联性分析，我们发现了一个名为Free Star的木马也采用了这种上线方式，该木马最早出现于2015年2月左右，作者从2015年5月开始在各个免杀论坛售卖源码，而新版本活动时间就在2016年1月份至今。其部分代码结构和Gh0st、大灰狼的代码比较相似，可以认为是那些远控的衍生版本。</p>

<p>下图为从某免杀论坛下载到的Free Star木马控制端，可以看见配置Server端中需要将IP地址加密后设置成QQ昵称，然后由服务端通过访问对应的接口来获取QQ昵称，进而解密出木马上线的IP地址：</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511072339233.png" alt="p3" /></p>

<p>访问的接口如下：</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511095946743.png" alt="p4" /></p>

<p>今天我们要分析的对象就是这个名为Free Star的木马，这个也是360天眼实验室新晋小伙伴的处女作。</p>

<h1>0x01 样本分析</h1>

<hr />

<p>样本信息基本识别信息如下，供同行们参考。</p>

<p>木马文件MD5: c3d7807f88afe320516f80f0d33dc4f3、a1bb8f7ca30c4c33aecb48cc04c8a81f</p>

<p>分析得到木马主要行为总结：</p>

<ul>
<li>添加服务项，开启服务，转移自身文件 </li>
<li>用gethostbyname函数获取上线地址或访问QQ昵称接口获取木马上线地址，并进行网络连接</li>
<li>检测杀软进程</li>
<li>开启线程接收指令，执行远控功能</li>
</ul>

<h3>添加服务项，开启服务，转移自身文件</h3>

<p>木马首先判断是否已经注册了服务项，如果没有注册，进入自拷贝、创建服务的流程：</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511103519353.png" alt="p5" /></p>

<p>创建服务</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511125406663.png" alt="p6" /></p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511143140773.png" alt="p7" /></p>

<p>调用StartServiceA开启服务，进入主功能流程</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511155557182.png" alt="p8" /></p>

<p>在拷贝自身，移动到<code>%appdata%</code>中指定目录</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511173887892.png" alt="p9" /></p>

<p>创建自删除脚本并执行，用于删除自身文件以隐藏自身</p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505111950961102.png" alt="p10" /></p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505112052198113.png" alt="p11" /></p>

<p>脚本内容如下：</p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505112245348122.png" alt="P12" /></p>

<h3>获取上线地址</h3>

<p>以服务项启动进入时，通过注册表对应的项判断服务是否存在，决定是否进入开始进行网络连接。</p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505112317211131.png" alt="p13" /></p>

<p>解密动态域名、QQ号、端口号：</p>

<p>解密算法是Base64解码后，异或0x88 ，加0x78，再异或0x20</p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505112514363141.png" alt="p14" /></p>

<p>获取IP地址</p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505112664174151.png" alt="p15" /></p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505112894430161.png" alt="p16" /></p>

<p>如果第一种方式不成功，则通过访问QQ昵称接口获取IP地址：</p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505112965897171.png" alt="p17" /></p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505113154485181.png" alt="p18" /></p>

<p>获取到的QQ昵称为： <code>deacjaikaldSS</code></p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505113280780191.png" alt="p19" /></p>

<p>对获取到的QQ昵称解密：解密算法是 <code>+ 0xCD</code></p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511349374920.png" alt="p20" /></p>

<p>解密后取得IP地址为： 1.207.68.91 ，开始连接：</p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505113596671211.png" alt="p21" /></p>

<p>循环连接这两个地址直到连接成功，连接成功后进入远控流程</p>

<h3>获取受害者系统信息</h3>

<p>首先获取主机名</p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505113692309221.png" alt="p22" /></p>

<p>获取CPU型号</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511381905723.png" alt="p23" /></p>

<p>获取其他信息等等</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511406229124.png" alt="p24" /></p>

<h3>遍历进程，查找杀软进程</h3>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511411032225.png" alt="p25" /></p>

<p>检查杀软的进程名用一个双字数组来存储，每个双字的值是指向对应杀软进程名的字符串的指针。如下：</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511428596526.png" alt="p26" /></p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511447379327.png" alt="p27" /></p>

<h3>创建新线程，用于循环等待接收远控指令</h3>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511465842528.png" alt="p28" /></p>

<p>最后创建一个新的线程，用于接收远控指令，主要的功能有远程文件管理、远程Shell、屏幕监控、键盘记录等等，这里就不再赘述了。</p>

<p>代码整体流程图如下：</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511474534229.png" alt="p28" /></p>

<h1>0x02 幕后黑手</h1>

<hr />

<p>这种通过QQ昵称获取上线地址的方式在躲避检测的同时也暴露了放马者的QQ号，我们在通过样本拿到的QQ号中找到了一个比较特殊的：550067654</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511489595530.png" alt="p29" /></p>

<p>通过搜索引擎，我们发现这个QQ号有可能是木马作者的一个业务QQ号，这个QQ在多个免杀论坛上注册了账号，经过进一步的确认，发现其的确是木马作者：</p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505115014918311.png" alt="p30" /></p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505115129700321.png" alt="p31" /></p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505115331894331.png" alt="p32" /></p>

<p>从作者在某论坛上展示的木马功能截图可以发现，其曾经在贵州毕节地区活动。</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511552299034.png" alt="p33" /></p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511573142435.png" alt="p34" /></p>

<p>我们还发现作者用QQ邮箱账号注册了支付宝账号，通过支付宝账号的信息，发现作者的名字可能是： <code>*怡</code></p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050511588996436.png" alt="p35" /></p>

<p>通过某社工库，我们找到了作者经常使用的qq邮箱和密码，通过这条线索，我们找到了更多的信息：</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050512001128537.png" alt="p36" /></p>

<p>在某商城发现了几笔订单信息，从而取到作者的名字、常在地区：</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050512015799738.png" alt="p37" /></p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050512033329739.png" alt="p38" /></p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050512048931440.png" alt="p39" /></p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505120612036411.png" alt="p40" /></p>

<p>从身份证信息来看，确定作者是贵州毕节地区的人，名字就叫田怡。这也与上面获得的信息一致。</p>

<p>关于木马作者的追踪到此就告一段落了，有兴趣的同学们可以继续深挖，用一张天眼威胁情报中心数据关联系统生成的关系图来结束此次挖人之旅。</p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505120714561421.png" alt="p41" /></p>

<h1>0x03 传播途径</h1>

<hr />

<p>分析完样本和木马作者之后，我们再看看该类木马的传播途径。</p>

<p>在我们捕获到的众多样本中，有一个样本访问的地址引起了我们的注意，通过关联，发现这是一些挂机、点击软件访问的地址，<code>http://sos.hk1433.cc:10089/bbs.html</code></p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505120912464431.png" alt="p42" /></p>

<p>打开网页后，查看源代码，如下：</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050512106438044.png" alt="p43" /></p>

<p>可以看到，这个页面加载了一个swf文件。将这个swf文件下载后打开，发现是Hacking Team的flash漏洞利用，下图红色框出的部分就是ShellCode：</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050512127995645.png" alt="p44" /></p>

<p>ShellCode的功能就是一个Dropper，会将之前解密出来的PE释放并执行，而这个PE文件正是Free Star木马。</p>

<p>解密前的PE文件：</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050512133672246.png" alt="p45" /></p>

<p>解密后：</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050512151055447.png" alt="p46" /></p>

<p>ShellCode：</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050512177218948.png" alt="p47" /></p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050512197241649.png" alt="p48" /></p>

<p>由此我们可以知道，该木马的传播方式之一即是通过网页挂马。</p>

<p><img src="http://static.wooyun.org//drops/20160405/201604050512214391050.png" alt="p49" /></p>

<p>通过上图可以看到挂马页面在3月28日上午9点上传，截至我们写这份报告的时间，3月29下午16点，点击量已经有13000多，而这仅仅只是冰山一角，但是在这里就不再深入。在我们的360威胁情报中心可以很容易地通过关联域名查询到对应的样本：</p>

<p><img src="http://static.wooyun.org//drops/20160405/2016040505122284198511.png" alt="p50" /></p>

<h1>0x04 总结</h1>

<hr />

<p>通过这次分析，我们发现这个木马本身所用到的技术相当普通，与之前发现的木马基本一脉相承，体现出迭代化的演进。由于巨大的利益驱动，黑产始终保有对技术和机会的高度敏感，就象任何先进的技术首先会被用于发展武器一样，成熟可靠的漏洞利用技术及躲避检测的方案几乎肯定会立刻被黑产所使用传播。360威胁情报中心的数据基础以及自动化的关联分析为我们从样本分析、关系判定、来源追溯提供全方位的信息支持，成为我们用来对抗黑产以及其他高级攻击的强有力的武器。</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          